package com.darren.euc.service;

import com.darren.euc.entity.Dept;
import com.darren.euc.entity.Member;
import com.darren.euc.entity.PageBean;
import com.darren.euc.util.Kv;
import net.sf.json.JSONObject;

import java.util.List;
import java.util.Map;

/**
 * Created by yanglas on 2018/3/11.
 */
public interface MemberService {
    PageBean queryForPageUseHQL(JSONObject data, Integer pageSize, int currentPage);

    Member findByMemberId(Integer id);

    Member findByIcCard(String icCard);

    Member saveMember(Member member) throws Exception;

    Member login(String mobile, String password) throws Exception;

    /**
     * 用户注册（app端）
     *
     * @param mobile
     * @param password
     */
    void register(String mobile, String password) throws Exception;

    /**
     * 更新token（app端）
     *
     * @param member
     * @return
     */
    String updateToken(Member member);

    /**
     * 通过token获取用户（app端）
     *
     * @param token
     */
    Member findByToken(String token);

    /**
     * 退出登录（app端）
     *
     * @param token
     */
    void logout(String token);

    /**
     * 修改密码（app端）
     *
     * @param mobile
     * @param password
     */
    void repass(String mobile, String password);

    /**
     * 企业下的所有部门（app端）
     *
     * @param clientId
     */
    List<Dept> findDeptByClientid(Integer clientId);

    /**
     * 条件查询用户数据（app端）
     *
     * @param kv
     * @return
     */
    List findMemberList(Kv kv);

    /**
     * 修改资料{用户名，邮箱}
     *
     * @param id
     * @param name
     * @param email
     */
    void memberUpdate(Integer id, String name, String email);

    /**
     * 人员信息（app端）
     *
     * @param member_id
     */
    Map findMemberInfo(int member_id);

    /**
     * 批量存储
     *
     * @param members
     */
    void saveMembers(List<Member> members) throws Exception;


    Member updateStatus(Integer memberId, Integer status);

    /**
     * 绑定手环
     *
     * @param wristBandsNumber
     * @param memberId
     */
    void bindWristBrindsNumber(String wristBandsNumber, Integer memberId) throws Exception;

    /**
     * 解除绑定
     *
     * @param memberId
     */
    void cancelBind(Integer memberId) throws Exception;

    /**
     * 上传头像
     *
     * @param headUrl
     * @param member
     */
    void updateHead(String headUrl, Member member) throws Exception;


    /**
     * 更新Member 状态
     */
    public void updateMemberStatus();

    /**
     * 批量更新客户会员状态
     * @param clientId
     * @param employStatus
     * @return
     */
    public boolean updateClientMemberStatus(Integer clientId, Integer employStatus);
}
